<template>
  <div>
    <div class="dowebok" id="dowebok">
      <div class="form-container sign-up-container">
        <form @submit.prevent="regist">
          <h1 style="margin-bottom: 30px;color: #636363">请输入您的信息注册</h1>
          <el-input type="text"  id="email" name="email" placeholder="邮箱" v-model="email" style="margin-bottom: 10px"></el-input>

          <el-input type="text"  id="Username" name="username" placeholder="用户名" v-model="username" style="margin-bottom: 10px"></el-input>

          <el-input type="password"  id="Password" name="password" show-password  placeholder="以字母开头,包含字母、数字" v-model="password" style="margin-bottom: 10px"></el-input>
          <el-input type="password"  id="Password2" name="password2" show-password v-model="password2"  placeholder="确认密码"style="margin-bottom: 10px"></el-input>
          <button type="submit">注册</button>
        </form>

      </div>
      <div class="form-container sign-in-container">
        <form @submit.prevent="login">
          <p style="font-size: 30px;font-weight: bold;letter-spacing: 4px;color: #636363;margin-bottom: 50px">社区疫情防控系统</p>
          <el-input type="text" placeholder="用户名" v-model="login_input" style="margin-bottom: 10px"></el-input>
          <el-input type="password" placeholder="密码" show-password v-model="login_pass" style="margin-bottom: 10px"></el-input>
          <el-link :underline="false" @click="rout">忘记密码？</el-link>
          <button type="submit">登录</button>
        </form>
      </div>
      <div class="overlay-container">
        <div class="overlay">
          <div class="overlay-panel overlay-left">
            <h1>已有帐号？</h1>
            <p>请使用您的帐号进行登录</p>
            <button class="ghost" id="signIn" @click="In">登录</button>
          </div>
          <div class="overlay-panel overlay-right">
            <h1>没有帐号？</h1>
            <p style="line-height: 30px">立即注册加入我们<br>和我们一起开始疫情防控吧</p>
            <button class="ghost" id="signUp" @click="up">注册</button>
          </div>
        </div>
      </div>
    </div>
  </div>


</template>

<script>
import axios from "axios";

export default {
  name: "Login",
  data(){
    return{
      login_input:"admin", // 登录输入的用户名或则邮箱
      login_pass:"admin", // 登录时输入的密码
      email:"", // 注册时的邮箱
      username:"",  // 注册时的用户名
      password:"" , // 注册是的密码
      password2:"" // 确认密码
    }
  },
  methods: {
    regist() {
      // // 用户注册
      if(this.validate_email() === true && this.validate_name() === true
        && this.validate_pass() === true && this.validate_pass2() === true)
      {
        const url = "http://localhost:8888/register";
        const data = {email:this.email, username:this.username, password: this.password};
        axios.post(
          url,
          data
        ).then(res=>{
          if(res.status === 200){
            if(res.data.register === "success"){
              this.$message.success("注册成功");
              this.In();
            }
            else{
              this.$message.error(res.data.result + ", 请重新输入");
              this.username = "";
              this.email = "";
              this.password = "";
              this.password2 = "";
            }
          }
        });
      }
    },
    login() {// 用户登录
      if(this.login_input === ""){
        this.$message.warning("用户名或邮箱不可为空");
      }
      else if(this.login_pass === ""){
        this.$message.warning("密码不可为空");
      }
      else{
        const url = "http://localhost:8888/login";
        const data = {input:this.login_input, password:this.login_pass};
        axios.post(
          url,
          data
        ).then(res=>{
          if(res.status === 200){
            if(res.data.login === "success"){
              this.$message.success("登录成功");
              // 设置全局变量
              localStorage.setItem("user", JSON.stringify(res.data.user));
              // power:代表管理员或则住户, 用于跳转至对应主页
              const power = res.data.user.power;
              console.log(power);
              if(power === "管理员"){
                localStorage.setItem("admin", "true");
                this.$router.push({path:"/layout"});
              }
              else if(power === "住户"){
                localStorage.setItem("admin", "false");
                this.$router.push({path:"/layout"});
              }
            }
            else{
              this.$message.error(res.data.result + ", 请重新输入");
              this.login_input = "";
              this.login_pass = "";
            }
          }
        });
      }
    },
    rout() {
      //忘记密码时跳转
      this.$router.push("/retrieve");
    },
    In() {//切换为登录界面
      var container = document.getElementById('dowebok');
      container.classList.remove('right-panel-active')
    },
    up() {//切换为注册界面
      var container = document.getElementById('dowebok');
      container.classList.add('right-panel-active');
    },
    validate_email(){
      let flag = false;
      if(this.email !== ""){
        var myreg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        if(!myreg.test(this.email)){
          this.$message.error("请输入有效格式的邮箱地址!!!");
        }else{
          flag = true;
        }
      }else{
        this.$message.warning("邮箱不可为空");
      }
      return flag;
    },
    validate_name(){
      let flag = true;
      if(this.username === ""){
        this.$message.warning("用户名不可为空");
        flag = false;
      }
      return flag;
    },
    validate_pass(){
      let flag = false;
      if(this.password !== ""){
        var myreg = /^[a-zA-Z]\w{5,17}$/;
        if(!myreg.test(this.password)){
          this.$message.error("请输入有效格式的密码!!!");
        }else{
          flag = true;
        }
      }else{
        this.$message.warning("密码不可为空");
      }
      return flag;
    },
    validate_pass2(){
      let flag = false;
      if(this.password2 !== ""){
        if(this.password2 === this.password){
          flag = true;
        }
        else{
          this.$message.warning("两者密码不一致，请重新输入！！！");
        }
      }else{
        this.$message.warning("确认密码不可为空");
      }
      return flag;
    }
  }
}
</script>

<style scoped>
* {
  box-sizing:border-box;
}
body {
  font-family:'Montserrat',sans-serif;
  background:#f6f5f7;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  height:100vh;
  margin:-20px 0 50px;
}
h1 {
  font-weight:bold;
  margin:0;
}
p {
  font-size:14px;
  line-height:20px;
  letter-spacing: .5px;
  margin:20px 0 30px;
}
span {
  font-size:12px;
}
a {
  color:#333;
  font-size:14px;
  text-decoration:none;
  margin:15px 0;
}
.dowebok {
  background:#fff;
  border-radius:10px;
  box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22);
  position:relative;
  top: 120px;
  /*left: 25%;*/
  overflow:hidden;
  width:750px;
  max-width:100%;
  min-height:480px;
  margin: auto;
}

.form-container form {
  background:#fff;
  display:flex;
  flex-direction:column;
  padding:0 50px;
  height:100%;
  justify-content:center;
  align-items:center;
  text-align:center;
}
.social-container {
  margin:20px 0;
}
.social-container a {
  border:1px solid #ddd;
  border-radius:50%;
  display:inline-flex;
  justify-content:center;
  align-items:center;
  margin:0 5px;
  height:40px;
  width:40px;
}
.social-container a:hover {
  background-color:#eee;
}
.form-container input {
  background:#eee;
  border:none;
  padding:12px 15px;
  margin:8px 0;
  width:100%;
  outline:none;
}
button {
  border-radius:20px;
  border:1px solid #87CEFA;
  background:#87CEFA;
  color:#fff;
  font-size:12px;
  font-weight:bold;
  padding:12px 45px;
  letter-spacing:1px;
  text-transform:uppercase;
  transition:transform 80ms ease-in;
  cursor:pointer;
}
button:active {
  transform:scale(.95);
}
button:focus {
  outline:none;
}
button.ghost {
  background:transparent;
  border-color:#fff;
}
.form-container {
  position:absolute;
  top:0;
  height:100%;
  transition:all .6s ease-in-out;
}
.sign-in-container {
  left:0;
  width:50%;
  z-index:2;
}
.sign-up-container {
  left:0;
  width:50%;
  z-index:1;
  opacity:0;
}
.overlay-container {
  position:absolute;
  top:0;
  left:50%;
  width:50%;
  height:100%;
  overflow:hidden;
  transition:transform .6s ease-in-out;
  z-index:100;
}
.overlay {
  background:#87CEFA;
  background:linear-gradient(to right,#87CEFA,#87CEFA) no-repeat 0 0 / cover;
  color:#fff;
  position:relative;
  left:-100%;
  height:100%;
  width:200%;
  transform:translateY(0);
  transition:transform .6s ease-in-out;
}
.overlay-panel {
  position:absolute;
  top:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  padding:0 40px;
  height:100%;
  width:50%;
  text-align:center;
  transform:translateY(0);
  transition:transform .6s ease-in-out;
}
.overlay-right {
  right:0;
  transform:translateY(0);
}
.overlay-left {
  transform:translateY(-20%);
}
/* Move signin to right */
.dowebok.right-panel-active .sign-in-container {
  transform:translateY(100%);
}
/* Move overlay to left */
.dowebok.right-panel-active .overlay-container {
  transform:translateX(-100%);
}
/* Bring signup over signin */
.dowebok.right-panel-active .sign-up-container {
  transform:translateX(100%);
  opacity:1;
  z-index:5;
}
/* Move overlay back to right */
.dowebok.right-panel-active .overlay {
  transform:translateX(50%);
}
/* Bring back the text to center */
.dowebok.right-panel-active .overlay-left {
  transform:translateY(0);
}
/* Same effect for right */
.dowebok.right-panel-active .overlay-right {
  transform:translateY(20%);
}
</style>
